+ function($) {
    function analysis(options) {
        var defaults = {
            container: "",
            data: "",
            isMulti: false, // 是否支持同类型要素多选
            defaultDate: "", // 默认时间
        }
        this.opts = $.extend(defaults, options);
        this.buildContainer();
    };

    analysis.prototype = {
        /**
         * 构建弹出框内容
         */
        buildContainer: function() {
            var that = this;
            var data = this.opts.data;
            if (!data) {
                return;
            }
            that.buildProContent(data || []);
            that.bindEvt();
        },
        /**
         * 构建要素展示
         * data 要素列表
         */
        buildProContent: function(data) {
            $(this.opts.container).empty();
            var $list = $('<div>').addClass('product-list');
            data.forEach(function(item) {
                var $item = $(`<div>`).addClass('product-item');
                var $title = $('<div>').addClass('product-title');
                $title.data('type', item.group_id).html(item.group_name);
                $item.append($title);
                debugger
                if (item.content) {
                    if (!item.height) {
                        var count = 0;
                        if (item.station) {
                            var $radar = $('<dl>').addClass('radar-station-tab');
                            var i = 0;
                            for (var key in item.station) {
                                $radar.append(`<dt data-statcd=${item.station[key]} class=${i === 0 ? 'active' : ''}>${key}</dt>`);
                                i++;
                            }
                            $item.append($radar);
                        }
                        if (item.angle) {
                            var $angle = $('<dl>').addClass('radar-angle-tab');
                            i = 0;
                            for (var key in item.angle) {
                            	$angle.append(`<dt data-angle=${item.angle[key]} class=${i === 0 ? 'active' : ''}>${key}</dt>`);
                                i++;
                            }
                            $item.append($angle);
                        }
                        var $ul = $('<ul>');
						$ul.attr("iid",item.group_id);
                        item.content.forEach(function(pro) {
                            count++;
                            var $li = $(`<li><span>${pro.ele_name}</span></li>`);
                            if (item.grid !== 'false'&& pro.grid !== 'false')
                               $li.append('<i>格</i>');
                            if (pro.selected)
                                $li.addClass("default");
                            pro.category = item.group_id;
                            pro.categoryName = item.group_name;
                            if (item.interval)
                        		pro.interval = item.interval;
							if (item.maxHour)
                        		pro.maxHour = item.maxHour;
                            $li.data('pro', pro);
                            $li.data('eleid', pro.ele_id);
                            $li.data('category', item.group_id);
                            $li.data('ptype', pro.type || pro.ele);
                            if (pro.width)
                                $li.css("width", pro.width);
                            $ul.append($li)
                        })
                        $item.append($ul);
                        if (count === 0) {
                            //$title.hide();
                        }
                    } else {
                        var $table = $('<table>');
                        var $thead = $('<tr>');
                        $thead.append('<th></th>');
						if(item.heightlabel){
							item.heightlabel.forEach(function(h) {
								$thead.append(`<th>${h}</th>`);
							})
						}else{
							 item.height.forEach(function(h) {
								$thead.append(`<th>${h}</th>`);
							})
						}
                       
                        $table.append($thead);
                        item.content.forEach(function(pro) {
                            var $tr = $('<tr>');
                            $tr.append(`<td>${pro.ele_name}</td>`);
                            item.height.forEach(function(h) {
                                var $td = $('<td>');
                                var newPro = $.extend({}, pro);
                                newPro.height = h;
                                $td.data('pro', newPro);
                                $tr.append($td);
                            })
                            $table.append($tr);
                        })
                        $item.append($table);
                    }
                }
                $list.append($item);
            })
            $(this.opts.container).append($list);
        },
        //点击显示pdf技术说明
        showTechPdf:function(id,path){
            var that = this;
            if (CafeJS.ModalBoxExist(id)) {
                CafeJS.ModalBoxShow(id);
                return;
            }
            CafeJS.ModalBox({
                id: id,
                container: 'cafe-busis-container',
                title: "技术说明",
                width: 1300,
                height: 700,
                m_top: 70,
                m_right: 90,
                hasMask:true,
                hide: true,
                html: "<div id='"+id+"' style='width:100%;height:calc(100% - 10px)'></div>",
                showCall: function(obj) {
                    PDFObject.embed(path,"#"+id);
                },
                closed: function () { }
            });
        },
        bindEvt: function() {
            var _this = this;
            // 要素点击事件
            $(this.opts.container).off().on('click', 'li', function(e) {
				e.stopPropagation();
                if($(this).hasClass("preventEventLi"))
                    return false;
                
                var oldPro = $(this).data("pro");
                if (oldPro.pdf_path) {
                    _this.showTechPdf(oldPro.ele_id, oldPro.pdf_path);
                    return false;
                }
                var selected = $(this).hasClass('active');
                if (selected) {
                    $(this).removeClass("active");
                } else {
                    if (!_this.opts.isMulti) {
                        var prev = $(this).siblings(".active");
                        prev.removeClass("active");
                        if (prev.length > 0) {
                            oldPro = prev.data("pro");
                        }
                    }
                    $(this).addClass("active");
                }

                if ($.isFunction(_this.opts.eleClick))
                    _this.opts.eleClick($(this).data('pro'), oldPro, !selected);

            }).on('mouseover', 'li', function() {
                if($(this).hasClass("preventEventLi"))
                    return false;
                $(this).find("i").show();
            }).on('mouseout', 'li', function() {
                if($(this).hasClass("preventEventLi"))
                    return false;
                if (!$(this).find("i").hasClass("active"))
                    $(this).find("i").hide();
            }).on('click', 'i', function(e) {
                e.stopPropagation();
                var selected = $(this).hasClass('active');
                var oldPro = $(this).parent().data("pro");
                if (selected) {
                    $(this).removeClass("active").hide();
                } else {
                    var activei = $(_this.opts.container).find(".product-item i.active");
                    if (activei.length > 0) {
                        activei.hide().removeClass("active");
                        oldPro = activei.parent().data("pro");
                    }

                    $(this).addClass("active").show();
                }

                if ($.isFunction(_this.opts.gridClick))
                    _this.opts.gridClick($(this).parent().data('pro'), oldPro, !selected);
            }).on('click', 'td', function() {
                var pro = $(this).data('pro');
                if (!pro) return;

                var selected = $(this).hasClass('active');
                var oldPro = $.extend({}, pro);
                if (selected) {
                    $(this).removeClass("active");
                } else {
                    var prev = $(this).siblings('td.active');
                    if (prev.length > 0) {
                        prev.removeClass('active');

                        oldPro = prev.data("pro");
                    }

                    $(this).addClass("active");
                }

                if ($.isFunction(_this.opts.eleClick))
                    _this.opts.eleClick(pro, oldPro, !selected);
            }).on('click', '.radar-station-tab dt', function() {
                $(this).addClass("active").siblings().removeClass("active");
                var pro = $(this).closest('.product-item').find('li.active');
                if (pro.length === 0) return;
                var oldPro;
                if (!_this.opts.isMulti) {
                    var prev = pro.siblings(".active");
                    if (prev.length > 0) {
                        prev.removeClass("active");
                        oldPro = prev.data("pro");
                    } else {
                    	oldPro = pro.data("pro");
                    }
                    if ($.isFunction(_this.opts.eleClick))
                        _this.opts.eleClick(pro.data('pro'), oldPro, true,true);
                }
            }).on('click', '.radar-angle-tab dt', function() {
                $(this).addClass("active").siblings().removeClass("active");
                var pro = $(this).closest('.product-item').find('li.active');
                if (pro.length === 0) return;
                var oldPro;
                if (!_this.opts.isMulti) {
                    var prev = pro.siblings(".active");
                    if (prev.length > 0) {
                        prev.removeClass("active");
                        oldPro = prev.data("pro");
                    } else {
                    	oldPro = pro.data("pro");
                    }
                    if ($.isFunction(_this.opts.eleClick))
                        _this.opts.eleClick(pro.data('pro'), oldPro, true);
                }
            })
            $(this.opts.container).find('li.default').trigger('click');
        }
    }
    CafeJS.analysis = function(settings) {
        var drop = new analysis(settings);
        return drop;
    };
}($);
